package com.bigdata.service.domain.bo;

import com.bigdata.common.core.validate.AddGroup;
import com.bigdata.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;
import java.util.List;

import com.bigdata.common.core.domain.BaseEntity;

/**
 * 数据集主业务对象 datasets
 *
 * @author ruoyi
 * @date 2025-07-15
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class DatasetsBo extends BaseEntity {

    /**
     * 唯一数据集ID
     */
    @NotBlank(message = "唯一数据集ID不能为空", groups = { EditGroup.class })
    private String id;

    /**
     * 数据标题（最大200字符）
     */
    @NotBlank(message = "数据标题（最大200字符）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String title;

    /**
     * 数据摘要描述
     */
    @NotBlank(message = "数据摘要描述不能为空", groups = { AddGroup.class, EditGroup.class })
    private String summary;

    /**
     * 数据分类ID
     */
    @NotBlank(message = "数据分类ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String categoryId;

    /**
     * 预览图存储路径（可为空）
     */
    @NotBlank(message = "预览图存储路径（可为空）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String coverImagePath;


    /**
     * 分页大小
     */
    private Integer pageSize;

    /**
     * 当前页数
     */
    private Integer pageNum;

    private Date startTime;

    private Date endTime;

    /**
     * 浏览次数
     */
    private Integer hitsValue;

    /**
     * 下载次数
     */
    private Integer downloadValue;

    private List<String> tags;

    private List<DatasetFilesBo> filesBos;

    /**
     * 排序列
     */
    private String orderByColumn;

    /**
     * 创建用户ID
     */
    private Long createUserId;

    /**
     * 数据类型
     */
    private Integer dataTypeId;

    private Boolean ascValue;

    /**
     * 文件数量
     */
    private Integer fileSize;

    private Integer selTypeId;

    private List<String> ids;

    private Integer uploadPointValue;

    private Integer dowPointValue;
    private Integer datasetStatus;

    private String searchTitle;

    /**
     * 时间范围
     */
    private String timeRange;

    /**
     * 空间范围
     */
    private String spatialExtent;

    /**
     * 发布时间
     */
    private String releaseTime;

    /**
     * 发布状态 1 上架  2 下架
     */
    private Integer listingStatus;

    /**
     * 分类ID列表
     */
    private List<Long> categoryIds;

    private String createBy;

    /**
     * 文件类型
     */
    private String fileType;


    /**
     * 审核上下文
     */
    private String auditContext;

}
